﻿using System;
using Scommesse.Model;
using Scommesse.Presenters.Admin;
using Scommesse.View;

namespace Scommesse.Presenters
{
    public class AutenticazioneTesseraPresenter : IAutenticazioneTesseraPresenter
    {
        private readonly InserimentoTessera _insForm;
        private readonly AutenticazioneTessera _autForm;
        private readonly IBetCard _betCard;

        public AutenticazioneTesseraPresenter(IBetCard betCard, InserimentoTessera insForm)
        {
            _autForm = new AutenticazioneTessera();
            _autForm.AddListener(this);
            _betCard = betCard;
            _insForm = insForm;
            _autForm.Show();
            _autForm.CodiceTessera = _betCard.CodiceTessera;
        }

        #region IAutenticazioneTesseraPresenter Members

        public void ControllaPin()
        {
            try
            {
                if (_betCard.VerificaPin(_autForm.PIN))
                {
                    switch (_betCard.GetType().Name)
                    {
                        case "BetCard":
                            new BasePresenter((BetCard) _betCard, _autForm, _insForm);
                            break;
                        case "BetCardAdmin":
                            new AdminFormPresenter(_autForm, _insForm);
                            break;
                    }
                    _autForm.PinError = false;
                    _autForm.BloccataError = false;
                }
                else
                {
                    _autForm.PinError = true;
                }
            }
            catch (InvalidOperationException)
            {
                _autForm.BloccataError = true;
            }
        }

        public void AnnullaButton()
        {
            _autForm.Close();
            ReturnToInserimentoDialog();
        }

        public void ReturnToInserimentoDialog()
        {
            _insForm.Show();
            _insForm.Activate();
        }
        #endregion
    }
}